3569
17060
 
LINQ kullanarak şuna benzer bir şey deneyebilirsiniz:
var değerleri = array.Skip (indeks)
.Alınmış)
.Sıralamak();
İndeks, ilk öğenin indeksidir ve n seçmek istediğiniz öğelerin sayısıdır.
Örneğin. https://dotnetfiddle.net/Pk1rwY
Yan not olarak. LINQ kullanmak, kodunuzun daha hızlı olacağı anlamına gelmez. Daha kompakt / okunabilir vb. Olacaktır. Kodunuzun ne kadar performanslı olduğunu değerlendirebilmek için BenchmarkDotNet gibi bir şey kullanmanız gerekir.
|
Linq çözümü yok:
private static T [] Extract  (T [] source, int fromIndex, int length) {
eğer (null == kaynak)
yeni ArgumentNullException (nameof (kaynak));
else if (fromIndex <0)
yeni ArgumentOutOfRangeException (nameof (fromIndex),
"From Index negatif olmamalıdır");
else if (uzunluk <0)
yeni ArgumentOutOfRangeException (nameof (uzunluk),
"Uzunluk negatif olmamalıdır");
eğer (fromIndex> = source.Length || uzunluk == 0)
yeni T [0] döndür;
T [] sonuç = yeni T [Matematik.Min (uzunluk, kaynak.Uzunluk - indeks'den)];
Array.Copy (kaynak, fromIndex, sonuç, 0, sonuç.Uzunluğu);
dönüş sonucu;
}
Sonra
çift ​​[] imza = yeni çift [] {0, 1, 2, 3, 4, 5};
çift ​​[] ret = Çıkar (imza, 3, 2);
Console.Write (string.Join (",", ret));
Sonuç:
3, 4
|
Sorunuzdan, .Take ve .Skip operatörlerinden yararlanmanız gerekir.
var sonucu array.Skip (startingIndex) sökünüz (numberOfElements) =;
Bu nedenle kodunuzdan, biraz farklı bir şey yapmaya, yani öğeleri toplamaya çalışıyorsunuz gibi görünüyor. .Sum operatörü burada yardımcı olabilir.
|
Aradığın cevap değil mi? C # arrays linq etiketli diğer sorulara göz atın veya kendi sorunuzu sorun.